Method and apparatus for managing business cell phone usage

ABSTRACT

A process and apparatus to remotely gather data about cellphone hardware and software configurations and usage. The system uses agents which are resident on the phones and which can be remotely launched by a data collection server by sending a message to a public IP address of the phone and addressed to a special port designated for launch. The agent specifies the launch port and a data collection port upon installation and registration with the cellphone operating system. Data on hardware configuration, software version and phone usage can be gathered. Data collection sessions are established by the data collection server sending a message addressed to the public IP address of the cellphone and the data collection port specified by the agent process upon registration with the operating system. Many alternative embodiments are also disclosed.

FIELD OF USE AND BACKGROUND OF THE INVENTION

Many businesses give cell phones to their employees for business usage.The IT department wants to keep track of which software version isinstalled in each phone and what types of phones are in the hands oftheir employees. They want to know this for compatibility of ugrades tothe phones and to know which phones, if any, need upgrades or to whichnew software can be downloaded. The company may also want to monitorusage of the phones so as to allocate budget usage amounts to itsvarious departments. It may also want to monitor usage to make sure mostusage is business related.

As far as the inventor is aware, the prior art has no convenientsolution to this problem. Currently, the company will get multiple papercell phone bills, each indicating the cell phone number of the phonebeing used and the phone numbers called and the minutes consumed. Noindication of the phone's software version or make and model is includedon these bills. No indication of which phone number is assigned to eachdepartment is included on these bills. The IT department would have tomanually look up the software and hardware version for each phone andwould have to determine manually from paper records which phones areassigned to which employees and which departments they are in. Then, theaccounting department would have to group the bills into groups bydepartment manually and add up the usage minutes manually. All this istime consuming and labor intensive and not attractive to IT departmentsor accounting departments of big and medium size companies.

Further, these bills come to the company on a monthly basis, and are notavailable on an as-needed, when-needed basis.

Accordingly, a need has arisen to gather information electronically fromthe phones themselves and collect and store that information in adatabase such that further inquiries can be made by mining the data inthe database. Preferably, the information will be gathered on anas-needed, when-needed basis.

SUMMARY OF THE INVENTION

The teachings of the invention define a genus of cellphone processes anda genus of collection server processes defined as follows. Before theprocess genus can be defined however, it is necessary to consider thefollowing precondition which must be true before any species within thegenus can execute.

A) an agent program (or some operating system functionality which canperform the functions of the agent program described herein—which willhereafter be referred to as the OS agent function) must be resident orremotely installed on a cellphone before data about said cellphone is tobe gathered.

The genus of the cellphone process is defined by the following steps:

1) launching the agent process (or some operating system functionalitywhich can perform the functions of the agent program described herein)in any way and collecting data about a cellphone;

2) establishing a data collection session with a data collection serverin any way;

3) sending the data to the collection server in any way.

There is a preferred subgenus within this genus where all species haveagents (or some operating system functionality which can perform thefunctions of the agent program described herein) which are remotelylaunched by the collection server which then initiates a data collectionsession. In this subgenus, there is one precondition to the process.That precondition is that the agent program, if an agent program is usedas opposed to an operating system function, must register with theoperating system of the phone upon installation and designate a launchport which if any message is received addressed to that launch port willcause the agent program to be launched. In embodiments where thefunctions of the agent are performed by some operating system agentfunction, the operating system must be configured such that whenever amessage is received directed to a particular port associated with the OSagent function, the operating system will launch the OS agent function.

The cellphone process preferred subgenus is defined by the followingfunctions that all species within the subgenus will perform:

1) when a message is received which is addressed to said launch port,said agent program or OS agent function is launched;

2) the agent or OS agent function monitors a data collection port for amessage from a data collection server;

3) when a message is received at said data collection port, the agent orOS agent function sends back data about the phone.

Various species within this genus vary in the following ways. Onespecies only launches the agent or OS agent function if the phone is notin use to make or receive a call. Another species allows the agent or OSagent function to be invoked, gather data and report back even while thephone is in use. Another species has the agent or OS agent functiongathering all available data that can be gathered and sending it allback to the collection server when a message is received at the datacollection port. Another embodiment gathers only data specified in themessage received at the data collection port and sends only that databack to the collection server. Another embodiment gathers all theavailable data by the agent or OS agent function but sends back onlydata requested by the data collection server. Another species sends backa handshake message when a message is received at the data collectionport. Another species specifies both the launch port and the datacollection port upon registration. Another species specifies only thelaunch port upon registration and the data collection port isestablished by a handshake protocol between the agent or OS agentfunction and the collection server.

There is a separate invention involving business use of the informationgathered by the phone in the collection server, possibly along withother information gathered from other servers such as from theprovider's servers or servers of the phone manufacturer or themanufacturer of the phone operating system. For example, a company whichprovides cell phones to its employees may have business interestsregarding use of the data gathered from the phones which can be broadlycategorized into the areas of: phone analysis; spending analysis; callanalysis; security management; maintenance support; and GPS location.For example, in the area of phone analysis, it is useful to a largecompany with many phones in the hands of its employees to be able toeasily gather information about how many phones are in the hands of itsemployees, what make and model they are, what operating system andversion they have, whether they have any virus protection softwareinstalled or not. This information can be used to negotiate with vendorsof phones to negotiate package deals or to get subsidized prices onphone handsets from the vendors, determine if standardization on certainfeatures is needed, or determine whether or not the company is spendingtoo much on acquisition of phones, etc. In the area of spendinganalysis, the company may be interested in determining how much money itis spending on the plans provided with its phones and with which vendorsfor purposes of negotiating better packages with vendors. In the area ofcall analysis, the company may be interested in determining the averageoutgoing and incoming call length distribution and the time of daydistribution of calls as well as determining who is being called and whois calling in. This type of information is useful to the company todetermine if it has the right package of plans for its phones and couldbe sold to phone service provider marketing departments for purposes ofdeveloping new plans for big and small businesses.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is block diagram of a typical cellular phone network showing howthe data collection server is coupled through the internet to a serverat the cellular provider.

FIG. 2 is a flowchart of the process to remotely launch the agentprogram, collect data, send the data to the collection server and shutdown.

FIG. 3 is a flowchart of the process carried out in the phone when theagent is told what to collect by the collection server and collects onlythat information and sends it back to the collection server.

FIG. 4 is a flowchart of another embodiment of a process carried out inthe cellphone to launch the agent and collect information but differingin that the agent can be launched and collect data and send that data tothe collection server even while the phone is in use.

FIG. 5 is a flowchart of another species of a process carried out in acellphone like FIG. 4 but the agent collects all available data andreports it all or just the data requested.

FIG. 6 is a flowchart of the genus of the cellphone process.

DETAILED DESCRIPTION OF THE PREFERRED AND ALTERNATIVE EMBODIMENTS

Referring to FIG. 1, there is shown a block diagram of a typicalcellular system in which the teachings of the invention may be employed.Cell phone 10 and cell phone 12 are each web enabled cell phones. Theyare each coupled by radio frequency transmissions through a series ofcellular towers such as 14 and 16 to the cellular system head end. Thehead end 18 of the cellular system is well known and typically includesan RF transceiver 20 coupled to a gateway/router 22. The gateway/router22 is coupled to a server 24, the internet 26, and the conventionaltelephone company land lines through a telephone company interface 28.Each cellular phone has an IP address which may be globally unique orwhich may be locally unique within the cellular system and converted toa globally unique IP address through a network address translation (NAT)process carried out in the gateway/router 22.

A gateway/router 30 couples a collection server 32 to the internet 26.The data collection server 32 could also be directly coupled to a localarea network to which the provider's server 24 is coupled, but typicallyit is not and data is transferred over the internet. The address of thecellphone must be either a globally unique IP address that routers onthe internet have in their routing tables, or a network addresstranslation router that couples the providers network to the internetvia a globally unique IP address of the NAT router and a NAT addresstranslation table must be used.

In the preferred embodiment, all the cellphone IP addresses are public,but the collection server IP address is private. Thus, collection ofdata sessions can only be initiated from the collection server 32 in thepreferred embodiment and not from the cellphones. In other embodiments,the data collection server has a public IP address and the cellphonescan initiate data transfers thereto.

The function of the collection server is to execute a process to collectinformation from the cell phones which is stored in a database. Thisdatabase can be mined by the IT and accounting departments of a companythat provided the cell phones to its employees to extract informationneeded by those departments. The collection server carries out thisprocess by carrying out a protocol to be described below to activate adata collection agent in each cellphone it wants to extract informationfrom and receive packets back from each cellphone that contains dataabout the cellphone and its usage. The server can also associate eachcellphone with an individual employee and/or department of thecorporation. Information can be gathered from individual cellphones orthe entire lot or any subset of the cellphones, and the information canbe gathered when needed.

Each cellphone has to be digitally enabled on the cellphone provider'sdigital data exchange network, and it has to have either a globallyunique IP address or a unique local address within the provider'sdigital network which can be translated by NAT to a globally unique IPaddress. NAT replaces the source address in each outgoing datagram froma cellphone agent with the globally unique IP address assigned to theNAT router 22. Likewise, incoming packets from the internet addressed tothe NAT router 22 have their destination addresses changed to thelocally unique address of the cellphone to which the data packet isaddressed. These incoming packets are routed to the appropriate one ofthe cellphones on the cellphone local area digital data network using anaddress translation table in the NAT router 22. The NAT routing tablecontains two items of information for each cellphone: the IP address ofthe host on the internet; and the internal IP address of the cellphoneon the cellular provider's network. This table must be in place beforethe first incoming packet intended for a cellphone arrives at the NATrouter. There are several possible embodiments for initializing (fillingwith address translation data) this NAT routing table.

-   1) Manual Initialization: A manager configures the translation table    manually before any communication occurs. Port numbers in the TCP/IP    packet headers can be used to distinguish between different    cellphones as the destination.-   2) Outgoing datagrams: The NAT routing table is built as a    side-effect of sending datagrams from the cellphones to the    collection server. When a datagram is received at NAT router 22 from    one of the cellphones, a software process automatically makes a NAT    routing table entry recording the local address of the cellphone and    the globally unique IP address of the collection server. This    alternative can only be used in embodiments where the agents    initiate communication with the collection server before the    collection server sends any packets to the cellphones. Such a class    of embodiments includes an embodiment where a cellphone agent    initiates a session with the collection server upon power up of the    phone or at some other time and registers itself with the collection    server.-   3) Incoming Name Lookup: The NAT routing table is built as a    side-effect of handling domain name lookups. When a host on the    internet such as the collection server looks up the domain name of    one of the cellphones to find its IP address, the domain name    software creates an entry in the NAT translation table, and then    answers the request by sending the globally unique IP address of the    NAT router 22. Thus, to the servers on the internet, it appears that    all cellphone host names in the cellular system map to the globally    unique IP address of the NAT router 22.

The address of each cellphone must be accessible to the router 30 sothat the data collection server 32 can communicate with each phone. Inthe preferred embodiment, each cellphone has a globally unique IPaddress and if the cellular provider uses NAT, each cellphone contractwill include a surcharge to cause that cellphone to be assigned aglobally unique IP address. In alternative embodiments where NAT is usedby the cellular system provider, the collection server 32 communicateswith each cellphone in the conventional manner in which all prior artNAT systems work.

The cellphone must have an agent program (or some operating systemfunctionality which can perform the functions of the agent programdescribed herein) which is resident in the preferred embodiment, orwhich can be downloaded, installed and launched remotely by thecollection server 32 in other embodiments. Downloading, installation andremote launching of programs digitally is known in the prior art of headend apparatus downloading programs to digital set top boxes in DOCSISdigital data delivery cable systems. In the preferred embodiment, the ITdepartment that gives a cellphone to an employee will manually installthe agent program in the phone before delivering it. In otherembodiments, the IT department can upload the agent program to a serverof the cellphone provider. The server of the cellphone provider thensends TCP/IP packets to the particular cellphone which include an agentprogram. In the preferred embodiment, the cellphone provider server thensends a message to the phone upon which the agent is to be installedsaying there is a new application the server would like to install onthe phone. If the phone owner permits the installation by giving somecommand, the phone launches an installer program which downloads theagent program from the cellphone provider server and installs it. Theinstaller program comes with the phone and is the same installer as isused to download and install games, ringers, etc. In other embodiments,the cellphone provider server just receives the message that theapplication may be installed and sends TCP/IP packets containing theagent program to the phone. These TCP/IP packets will be addressed to aport which signals the J2ME software (or whatever other operating systemthe phone has) in the phone to invoke an API function to invoke aninstaller program to receive the TCP/IP packets containing the agentprogram and install it in the phone in a resident state ready to belaunched. In the preferred embodiment, the user of the phone is involvedin the installation to answer yes or no to a query as to whether hewants the agent program to be installed. This embodiment is preferredbecause it prevents applications from being installed surreptitiously onthe phone. In other embodiments, the agent program will be installed inthe background and no user involvement or knowledge that a newapplication has been loaded is necessary.

In the preferred embodiment, the agent program or OS agent function islaunched by the collection server 32 only when the server 32 wants tocollect information. In the preferred embodiment, the agent or OS agentfunction will only run when the cellphone is not in use in making orreceiving a call. Many cellphones can only run one program at a time. Inalternative embodiments, where a cellphone can run multiple programssimultaneously, the agent can be launched at any time by the collectionserver. In still other alternative embodiments, the agent can be runningin the background at all times and continuously collect information andsend it to the collection server at the initiation of the agent byestablishing a secure or non secure session over the internet with thecollection server. In the preferred embodiment however, the initiationof a data collection session with an agent can only be initiated by thecollection server.

Typically, each cellphone will have J2ME (Java 2 Micro Edition) softwareloaded in addition to whatever operating system or simple BIOS (BasicInput Output System) the manufacturer of the cellphone installs.Effectively, J2ME is the operating system. Hereafter, references to theoperating system refer to the J2ME layer. J2ME is a Java Virtual Machinewhich presents an application programmatic interface (API) that allowscertain functions to be invoked. Other operating systems will work topractice the invention also. For example, the BREW phone operatingsystem from Qualcomm or Microsoft PocketPC operating system can also beused. Therefore, J2ME as a phone operating system or layer offunctionality above the phone operating system is not a required elementto practice the invention. However, there must be some software whichpresents an API which allows the phone functionality needed to practicethe invention to be invoked. The API functions needed are as follows(some are optional).

-   -   1) Install and execute an installation program to load another        program: in the preferred embodiment, software cannot be loaded        without a human interacting with the phone. Typically, the agent        program will be installed manually by the IT department.        However, the agent program can also be downloaded over the RF        digital data link and installed on the phone remotely.        Typically, this requires permission from the operator of the        phone, but in some embodiments, the agent program can be        downloaded over the RF data link and installed on the phone        remotely without the user of the phone knowing about it or        having to give permission. Remote installation would be done by        sending IP packets that contain the agent to the cellular        provider server 24 along with a list of phones upon which the        agent is to be installed. The provider's server 24 then sends        messages to all the phones on the list and which need the agent        program. Each user of such a phone receives the message and has        to consent to loading of the agent. If the user consents, server        24 encapsulates the agent program into IP packets addressed to        each phone which consents. These IP packets get routed to the        phone by the router 22 in the network of the cellular service        provider. When the IP packets get to the phone, they are passed        up through the TCP/IP layers to the J2ME layer to invoke this        install/execute API function to execute an install program and        install the agent program encapsulated in the IP packet's        payloads into the phone.    -   2) Network connectivity: this function establishes connectivity        to a particular port by a program. For example, this function        can be invoked when a program wants to listen for packets        addressed to it from other programs. A program could invoke this        function and pass the port number of the port it wants to listen        to as part of the function call. The API function would then        execute and establish the designated port as associated with the        calling program so that packets addressed to that port would be        passed to the calling program.    -   3) Remote invocation of a program: this is an underlying        operating system function which on a specific port for a        specific message which will launch the agent program. An agent        program on a particular phone can be launched by sending a        datagram addressed to the phone's IP address (or local address        in the case of NAT) and to a particular port which is dedicated        to the agent program. Whenever a datagram or text message is        received which is addressed to the phone and to this particular        port, the operating system launches the agent program so that it        can gather data from the phone and send it back to the        collection server 32. The collection server 32 knows which IP        address each cellphone has and knows which port the phone's        operating system is listening to for a start message. When the        agent program was installed, registers itself with the operating        system of the phone and designates the port. The operating        system know from this registration that whenever it receives a        datagram or text messaged addressed to that port number of the        phone that it must launch the agent program by invoking this        remote invocation of program function call.    -   4) Access phone data: this function call allows the agent to        gather information from the operating system or J2ME layer about        the cellphone and its use including information on:        -   phone make and hardware version information        -   operating system software version information        -   provider identity        -   the existence or non existence of any virus protection            software in the phone        -   usage information            -   call timers            -   the included minutes or other plan the phone is on if                that information is stored in the phone or the                electronic serial number of the phone;            -   the configuration file privileges such as web access,                picture sending and receiving capability or other data                reception sending and receiving capability of the phone            -   list of incoming and outgoing calls or missed calls            -   GPS location and possibly tracking of locations over                time            -   list of names and phone numbers in the phone's address                book        -   and whatever other information which can be gathered about            the phone or its usage which would be a useful piece of            information to manage a company's cellular phone program.

The agent program itself does not have an API in the preferredembodiment, but in other embodiments, the agent program or OS agentfunction could have its own API such as providing function calls thatcan be invoked to gather each specific different type of information.

The data collection process and apparatus described herein are selfcontained and does not rely on the cellphone provider's billing systemor any other operation of the server of the cellphone provider. The onlyqualification to this statement is that some embodiments involve thecellphone provider's server to install agent programs over the radiofrequency data transport process provided by the cellphone provider'snetwork.

Referring to FIG. 2, there is shown a flowchart of the process toremotely launch the agent program or OS agent function, collect data,send the data to the collection server and shut down. Before the processof FIG. 2 can be executed, an agent program has to be installed in thephone and must have registered with the operating system to identify aport. That port will be the port at which, if a message is receivedaddressed to that port, the operating system will know to launch theagent.

At the beginning of the process of FIG. 2, the agent program has beenpreviously installed but is not executing in the preferred embodiment.The teachings of the invention contemplate that the agent'sfunctionality will eventually be incorporated as a function of theoperating system which can be invoked through a procedure call to theoperating system or through an API function call. Hereafter, anyreference to the agent should be understood as also referring tooperating system functionality which performs the functions of the agentprogram if no specific reference to OS agent function is made.

Step 34 represents the process of remotely launching the agent OS agentfunction. In step 34, the collection server starts the process ofcollecting data by sending a message in the form of one or more TCP/IPpackets addressed to a cellphone from which data is to be collected.These one or more TCP/IP packets will have in their headers the portnumber which the agent program or OS agent function of the cellphonebeing addressed registered as its launch port. In step 36, the J2MEsoftware layer receives the message from the collection server addressedto the launch port of the agent program or OS agent function andlaunches the agent program or OS agent function as a result by invokingthe appropriate API function call.

In step 38, the agent or OS agent function launches and collects dataabout the phone hardware version, software version and usage. The agentor OS agent function also establishes a waiting loop while listening toa data collection port. This port number is known to both the collectionserver and the agent or OS agent function. In the preferred embodiment,the data collection port is specified by the agent program when itregisters with the operating system upon being installed along with thelaunch port. The launch port is the port which, if any message isreceived which is addressed to the launch port, the agent program or OSagent function will be launched. In alternative embodiments, the datacollection port can be established by a handshake protocol between theagent program or OS agent function and the collection server. In someembodiments, the data collection port number is known to the collectionserver because all agents register the same port number with theiroperating systems. In other embodiments, the agent program or OS agentfunction will send a message to the collection server after it hasregistered telling the collection server which port has been assigned asthe data collection port. In this embodiment, the collection server musthave a public IP address or be in the same network with the cellphoneprovider's servers.

There are three different species for collection of data by the agentprogram or OS agent function. In the preferred species, illustrated inFIG. 2, the agent program or OS agent function launches and then waitswhile listening to the data collection port for messages from the datacollection server. These messages are addressed to the data collectionport and requests the agent program or OS agent function to send backall the data it has collected about the phone. In the preferredembodiment, the agent or OS agent function collects whatever data it cancollect when it launches and then waits for the collection server to askfor all the data it has. In another embodiment, these messages sent bythe data collection server to the phone's data collection port specifyexactly which data the collection server wishes to collect, and the agenor OS agent function t collects only that data. In a third embodiment,these messages specify what data the collection server want to collect,and the agent or OS agent function collects all the data it can collectbut only sends back the data which the collection server asks for.

In step 40, the collection server 32 uses the public IP address of thecellphone from which it desires to collect data and sends a message tothat IP address with the data collection port number in the TCP/IPpacket headers. It is possible that multiple data collection servers whohave the IP address of the cellphone will all try to collect informationfrom the phone. In the preferred embodiment, only the collection serverscan initiate communications with the cellphone to collect data, and notthe other way around. The server will try to establish communicationswith the phone for some predetermined amount of time, and ifcommunications are not successfully established, the server process willtime out and the data collection effort will be put in failed status andmay be rescheduled for later.

In step 42, communication will be established by the agent or OS agentfunction if the phone is not in use by the agent receiving the messagesent by the collection server to the data collection port and sendingback a handshake message. In alternative embodiments, the handshake canbe dispensed with. In other embodiments where the phone ismultithreading and other concerns such as privacy do not preclude it,the agent or OS agent function can be launched even when the phone is inuse. In some embodiments, the agent or OS agent function can be launchedwhile the phone is in use and can collect phone data while the phone isin use. In still other embodiments, the agent or OS agent functionlaunches itself automatically when the phone is in use, and part of thedata collected is the phone conversation held on the phone. The phoneconversations is stored in digital, compressed form in a file stored onthe phone until the collection server initiates a data collectionsession.

In step 44, the agent process or OS agent function sends back to thecollection server the data it has gathered about the phone hardwareversion, the software version, phone usage and whatever otherinformation the agent or OS agent function has gathered. In otherembodiments, the agent or OS agent function does not just automaticallygather all the information it can gather but waits to receive a messagein step 40 from the collection server specifying which information thecollection server wants and then just gathers that information and sendsit back in step 44.

The collected data can be in any format such as fields separated bydelimiters or a concatenation of fields each of a defined length withthe entire file marked by delimiters at the beginning and end. Thetransport mechanism is the native mechanism used by J2ME (or whateverother operating system is present in the phone) and the cellular systemprovider, such as IP packets which are parsed and encoded into symbolswith forward error correction techniques and then code divisionmultiplexed.

In step 46, the agent or OS agent function and collection serverterminate the session and the agent shuts down so as to conserve phoneresources.

FIG. 3 is a flowchart of the process carried out in the phone when theagent or OS agent function is told what to collect by the collectionserver and collects only that information and sends it back to thecollection server. All steps that have identical reference numbers tosteps in FIG. 2 are the same. Step 39 differs from step 38 in FIG. 2 inthat the agent or OS agent function launches and does not immediatelygather all the available information about the phone as it does in theembodiment of FIG. 2. Instead, the agent or OS agent function justlaunches and goes into a waiting loop waiting for requests for specificdata from the collection server. In step 41, the collection serverattempts to establish communication with the cellphone by sending amessage to the data collection port of the cellphone. That messagespecifies which information the collection server wants to collect. Instep 43, the agent or OS agent function sends back a handshake messageif the phone is not in use, and collects the requested data from thecellphone's operating system. In step 45, the agent or OS agent functionsends back just the data requested by the collection server which wascollected in step 43 to the collection server. Thereafter, the sessionis terminated and the agent or OS agent function shuts down.

FIG. 4 is a flowchart of another embodiment of a process carried out inthe cellphone to launch the agent or OS agent function and collectinformation but differing in that the agent or OS agent function can belaunched and collect data and send that data to the collection servereven while the phone is in use. Steps which have the same referencenumbers as steps in FIG. 3 have the same function and operation. Thedifference over the embodiment of FIG. 3 is in step 47. There, the agentor OS agent function sends back a handshake message to the collectionserver in response to the collection server initiating a data gatheringsession, and this happens regardless of whether the phone is in use ornot. In the preferred embodiment, the J2ME software is multithreadingand has the capability to do this so this embodiment can be practiced ina J2ME phone or any other phone with multithreading ability of itsoperating system.

The embodiment of FIG. 4 carries out a process where the collectionservers specifies just the data it wants and the agent or OS agentfunction collects only that data.

In the alternative embodiment represented by FIG. 5, the agent or OSagent function collects all the possible data in step 50. The collectionserver in step 54 establishes a data collection session with the phoneand either sends a message requesting certain pieces of information besent or sends a message requesting all the collected data be sent. Theagent or OS agent function then sends all the collected data to thecollection servers in step 52 or just the data specified by thecollection server in the case where the collection server specifiedexactly which data about the phone it wanted. All other steps withidentical reference numbers to steps in FIG. 4 have the same functionand operation.

Referring to FIG. 6, there is shown a flowchart of the genus of thecellphone process. In step 60, the agent or OS agent function islaunched in any way. In some species, it will be launched in the mannerdescribed in FIGS. 2-5 using a launch port. In other embodiments, theagent or OS agent function will be in execution at all times the phoneis powered on. In still other embodiments, the agent or OS agentfunction launches itself whenever the phone is used to make a call orreceive a call or do any other function. Step 62 represents the processof establishing a data collection session between the cellphone and thedata collection server in any way. In some species it can be onlyinitiated by the data collection server. In other embodiments, it can beinitiated by the cellphone itself, such as whenever it has data to send,and where the data collection server has a public IP address. In step64, collected data about the cellphone is sent to the data collectionserver for storage in a database. This can be done in anyway such by useof datagrams or by a File Transfer Protocol.

Referring to FIG. 7, there is shown a flowchart of the preferredembodiment of a process to run on the server. Step 66 is really apreliminary step of installing the collection software and thecollection scripts for J2ME agents or OS agent functions. The collectionsoftware does the steps that follow the installation and configurationsteps 66 and 68. Step 68 is another preliminary step which involvesconfiguring a configuration file or database stored in nonvolatilememory to add the IP addresses of the cellphones from which data is tobe collected and defining a frequency of collection and any restrictionssuch as do not collect during morning hours in this user's time zone ordo not collect during commute times when the phone is likely to be busy.

Step 70 is the first step of the collection process. This step checksthe time and determines if it is time to begin a collection cycle. Ifnot, the system idles until it is or does other tasks. If it is time tocollect data, processing calls a do loop routine which starts at 72. Thefirst step of this routine is to read the next IP address from the listof IP addresses assigned to the cellphones being monitored, assymbolized by step 74. Test 76 reads the restrictions associated withthis IP address and determines if the IP address is eligible forcollection. If not, step 74 is performed again to read the next IPaddress from the group of addresses of cellphones. If the IP address isready for collection, step 78 is performed to retrieve a collectionscript for the type of cellphone agent or OS agent function which hasbeen installed in the cellphone assigned to this IP address. There aremany different type of collection scripts for different computers andoperating systems in the company and different types of cellphones.

In step 80, the script is executed. This involves launching the agent orOS agent function by creating and sending a datagram message addressedto the cellphone's public IP address and to the launch port of thecellphone. Next, the collection script trys to establish a collectionsession with the cellphone by sending a datagram to the collection portfor some specified timeout period. If a collection session isestablished, and a handshake is received, the collection script receivesthe collected data, parses it and stored it in a database or otherrepository on the collection server.

Although the invention has been disclosed in terms of the preferred andalternative embodiments disclosed herein, those skilled in the art willappreciate possible alternative embodiments and other modifications tothe teachings disclosed herein which do not depart from the spirit andscope of the invention. All such alternative embodiments and othermodifications are intended to be included within the scope of the claimsappended hereto.

1. (canceled)
 2. (canceled)
 3. (canceled)
 4. (canceled)
 5. (canceled)
 6. (canceled)
 7. (canceled)
 8. (canceled)
 9. (canceled)
 10. (canceled)
 11. (canceled)
 12. (canceled)
 13. (canceled)
 14. (canceled)
 15. (canceled)
 16. (canceled)
 17. (canceled)
 18. (canceled)
 19. (canceled)
 20. (canceled)
 21. (canceled)
 22. (canceled)
 23. (canceled)
 24. (canceled)
 25. (canceled)
 26. A process carried out in a cellphone to collect data about the cellphone, comprising steps: 1) launching in any way an agent process which is resident on said cellphone and using said agent process to gather data about the cellphone including the operating system software and version of an operating system which is installed on said cellphone and the make and model of said cellphone; 2) establishing a data collection session with a data collection server in any way; and 3) sending collected data about said cellphone to said collection server in any way.
 27. The process of claim 26 wherein said agent program is not part of an operating system of said phone and registers with said operating system of said cellphone upon installation on said cellphone and designates a launch port at which if any message is received addressed to said launch port causes said agent program to be launched and also gather data detailing the phone number of said cellphone and usage of said cellphone.
 28. The process of claim 26 wherein steps 1 and 2 are carried out by said agent program and wherein said agent program is programmed to listen for any message addressed to a particular port associated with the agent program, and when such a message is received, said agent program launches and gathers the phone number of said cellphone and usage data of said cellphone and initiates a data collection session with a collection server by sending a message addressed to a public IP address of said data collection server.
 29. The process of claim 26 wherein step 1 is carried out by also gathering information about the phone number of said cellphone and whether or not any virus protection is installed on said cellphone, and the durations and times of day of outgoing and incoming calls and the caller ID of persons or entities who called said cellphone and the caller ID of persons or entities who were called by said cellphone.
 30. A computer-readable medium having computer-executable instructions thereon for controlling a cellphone computing device to carry out the following process: 1) launching an agent process or OS agent function in any way and gather data about the cellphone including the phone number of said cellphone, the operating system software and version of an operating system which is installed on said cellphone and the make and model of said cellphone; 2) establishing a data collection session with a data collection server in any way; and 3) sending collected data about said cellphone to said collection server in any way.
 31. The computer readable medium of claim 30 wherein said computer-executable instructions for controlling said cellphone computing device further comprise instructions which will cause said cellphone to execute an agent program which is not part of an operating system of said cellphone, and wherein said instructions further cause said agent program to register with said operating system of said cellphone and designate a launch port at which if any message is received addressed to said launch port causes said agent program to be launched and gather data detailing the usage of said cellphone.
 32. The computer readable medium of claim 30 wherein said computer-executable instructions for controlling said cellphone computing device further comprise instructions which will cause said cellphone to execute an agent program which controls said cellphone to listen for any message addressed to a particular port associated with said agent program, and when such a message is received, said agent program launches and gathers usage data of said cellphone including the durations and caller identifications of incoming and outgoing calls and initiates a data collection session with a collection server by sending a message addressed to a public IP address of said data collection server.
 33. The computer-readable medium of claim 30 wherein said computer-executable instructions are such that, when executed by a cellphone, said computer-executable instructions control said cellphone to launch an agent program when any message is received from a collection server which is addressed to a particular port but only if said cellphone is not in use to make or receive a phone call.
 34. The computer-readable medium of claim 30 wherein said computer-executable instructions are such that, when executed by a cellphone, said computer-executable instructions control said cellphone to launch an agent program when any message is received from a collection server which is addressed to a particular port but regardless of whether said cellphone is in use to make or receive a phone call.
 35. The computer-readable medium of claim 30 wherein said computer-executable instructions are such that, when executed by a cellphone, said computer-executable instructions control said cellphone to launch an agent program under predetermined circumstances and gather all available data which can be gathered about said cellphone for sending back to a collection server.
 36. The computer-readable medium of claim 30 wherein said computer-executable instructions are such that, when executed by a cellphone, said computer-executable instructions control said cellphone to execute an agent program when a message is received from a collection server addressed to a predetermined port, said agent program functioning to gather for sending back to said collection server only data about said cellphone which is requested by said collection server.
 37. The computer-readable medium of claim 30 wherein said computer-executable instructions are such that, when executed by a cellphone, said computer-executable instructions control said cellphone to execute an agent program when a message is received from a collection server addressed to a predetermined port, said agent program functioning to gather for sending back to said collection server all available data about said cellphone which can be gathered, but to only send back to said collection server only data about said cellphone which is requested by said collection server.
 38. The computer-readable medium of claim 30 wherein said computer-executable instructions are such that, when executed by a cellphone, said computer-executable instructions control said cellphone to execute an agent program when a message is received from a collection server addressed to a predetermined port and to send back a handshake message to said collection server.
 39. The computer readable medium of claim 30 wherein said computer-executable instructions for controlling said cellphone computing device further comprise instructions which will cause said cellphone to execute an agent program which is not part of an operating system of said cellphone, and wherein said computer-executable instructions further cause said agent program to register with said operating system of said cellphone and designate a launch port at which if any message is received addressed to said launch port causes said agent program to be launched and to further designate a data collection port during said registration process, said agent program functioning to also gather data detailing the usage of said cellphone.
 40. The computer readable medium of claim 30 wherein said computer-executable instructions for controlling said cellphone computing device further comprise instructions which will cause said cellphone to execute an agent program which is not part of an operating system of said cellphone, and wherein said computer-executable instructions further cause said agent program to register with said operating system of said cellphone and designate a launch port at which if any message is received addressed to said launch port causes said agent program to be launched and to launch when said message is received and carry out a handshake protocol with said collection server to establish a data collection port through which data collected about said cellphone will be sent.
 41. A cellphone apparatus having a microprocessor controlled by a J2ME Java Virtual Machine software layer and further programmed to carry out the following process: 1) launching an agent process or OS agent function in any way and gather data about the cellphone including the phone number of said cellphone, the operating system software and version of an operating system which is installed on said cellphone and the make and model of said cellphone; 2) establishing a data collection session with a data collection server in any way; and 3) sending collected data about said cellphone to said collection server in any way.
 42. The apparatus of claim 41 wherein said microprocessor is programmed to carry out step 1 by a remote launch procedure by receiving a message from a data collection server addressed to a predetermined port and then launching an agent program which functions to gather information about whether or not any virus protection is installed on said cellphone, and the durations and time of day of outgoing and incoming calls and the caller ID of persons or entities who called said cellphone and the caller ID of persons or entities who are being called by said cellphone, and wherein said microprocessor is programmed to carry out step 2 by receiving a message from a data collection server addressed to a predetermined data collection port and sending back a handshake message.
 43. The apparatus of claim 41 wherein said said microprocessor is programmed to carry out step 1 by a remote launch procedure by receiving a message from a data collection server addressed to a predetermined port and then launching an agent program which functions to register with said operating system of said cellphone and designate a launch port at which if any message is received addressed to said launch port causes said agent program to be launched and to further designate a data collection port during said registration process, said agent program functioning to also gather data detailing the usage of said cellphone.
 44. The apparatus of claim 41 wherein said microprocessor is programmed to carry out step 1 by gathering all available data about said cellphone, and sending all gathered data back to said collection server.
 45. The apparatus of claim 43 wherein said microprocessor is programmed to carry out step 1 by gathering only data about said cellphone which is specified by said collection server in a message sent to said data collection port, and sending all gathered data back to said collection server. 